#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdbool>

using namespace std;

//namespace hcm
//{
//	template<class T,size_t N = 10>
//	class array
//	{
//	public:
//		T& operator[](size_t index) 
//		{ 
//			return _array[index]; 
//		}
//
//		const T& operator[](size_t index) const
//		{
//			return _array[index];
//		}
//		
//		size_t size()const
//		{
//			return _size;
//		}
//
//		bool empty() const
//		{
//			return _size == 0;
//		}
//
//
//	private:
//		T _array[N];
//		size_t _size = N;
//	};
//}
//
//int main()
//{
//	hcm::array<int, 20> a1;
//	for (int i = 0; i < a1.size(); ++i)
//		std::cout << a1[i] <<" ";
//	std::cout << std::endl;
//
//	return 0;
//}


//template<class T>
//bool Less(T left, T right)
//{
//	return left < right;
//}
//class Date
//{
//public:
//	Date(int year, int month, int day)
//		:_year(year)
//		, _month(month)
//		, _day(day)
//	{}
//	bool operator<(Date& d1)
//	{
//		return (_year < d1._year) || (_year == d1._year && _month < d1._month)
//			|| (_year == d1._year && _month == d1._month && _day < d1._day);
//	}
//	bool operator>(Date& d1)
//	{
//		return (_year > d1._year) || (_year == d1._year && _month > d1._month)
//			|| (_year == d1._year && _month == d1._month && _day > d1._day);
//	}
//private:
//	int _year;
//	int _month;
//	int _day;
//};
//template<>
//bool Less<Date*>(Date* left, Date* right)
//{
//	return *left < *right;
//}
//int main()
//{
//	int a = 1;
//	int b = 2;
//	cout << Less(1, 2) << endl;
//	cout << Less(a, b) << endl;
//	/*int* p1 = &a;
//	int* p2 = &b;
//	cout << Less(p2, p1) << endl;*/
//	Date d1(2023, 7, 22);
//	Date d2(2023, 7, 23);
//	cout << Less(d1, d2) << endl;
//	cout << Less(d2, d1) << endl;
//
//	return 0;
//}

template<class T1,class T2>
class Date
{
public:
	Date()
	{
		cout << "Date()<T1,T2>" << endl;
	}
	
private:
	T1 _d1;
	T2 _d2;
};

template<class T>
class Date<int,T>
{
public:
	Date()
	{
		cout << "Date<int, T>()" << endl;
	}
private:
	int _d1;
	char _d2;
};

int main()
{
	Date<int,char> d1;

	return 0;
}